FIX: handle potential TypeError when determining variable type #3516
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
I ran into an issue with Seaborn 0.13.0 that wasn't present in previous versions. The following code works fine in Seaborn 0.12.2 but raises
numpy.core._exceptions._UFuncInputCastingError
on 0.13.0.The reason are numpy's default casting rules and the fact that the check changed from
np.isin(vector, [0, 1, np.nan]
tonp.isin(vector, [0, 1])
in the latest release. That means that previously the comparison was with0.0
and1.0
as float dtype, because thenan
made NumPy cast the whole test array to float. Now the comparison is against int dtype.In my opinion, the actual dtypes are not relevant here. But we should not assume that the default casting rules allow that this comparison is possible. Simply because the data type of
vector
is not know as the data is provided by the user.Therefore, I'd say it is best to handle the
_UFuncInputCastingError
(which is a subclass ofTypeError
) and in that case decide that the data is not binary/boolean. The then remaining checks should not have similar issues.